package com.study.concurrent.B_ThreadSynchronizedBasic.h_UserMultipleConditionInLock;

/**
 * Created by 赵超 on 2017/3/23.
 * 文本文件模拟类
 */
public class FileMock {
    /**
     * 字符串数组用于存储文件的内容
     */
    private String[] content;
    /**
     * 表示要从这个文件读取的内容的行号
     */
    private int index;

    /**
     * 构造器初始化属性
     *
     * @param size   字符串数组的大小
     * @param length stringBuffer的容量
     */
    public FileMock(int size, int length) {
        content = new String[size];
        for (int i = 0; i < size; i++) {
            StringBuffer stringBuffer = new StringBuffer(length);
            for (int j = 0; j < length; j++) {
                /**
                 * 产生随机数字从而产生随机字符放入stringBuffer中
                 */
                int indice = (int) (Math.random() * 255);
                stringBuffer.append((char) indice);
            }
            content[i] = stringBuffer.toString();
        }
        index = 0;
    }

    /**
     * 检查文件中是否有可以处理的数据行，如果已经达到文件末尾就返回false
     */
    public boolean hasMoreLines() {
        return index < content.length;
    }

    /**
     * 获取指定的行内容并将index自动加1
     */
    public String getLine() {
        if (this.hasMoreLines()) {
            System.out.println("Mock : " + (content.length - index));
            return content[index++];
        }
        return null;
    }

}
